/*
* Copyright (C) 1997-2001 Id Software, Inc.
* 
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
* 
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE.
* 
* See the GNU General Public License for more details.
* 
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place - Suite 330, Boston, MA 02111-1307, USA.
*  
*/

// Created on 11.11.2003 by RST.
// $Id: M_Actor.java,v 1.4 2005/11/20 22:18:33 salomo Exp $
using System;
using Defines = Suake2.UI.Defines;
using Suake2.UI.game;
using EntDieAdapter = Suake2.UI.game.EntDieAdapter;
using EntPainAdapter = Suake2.UI.game.EntPainAdapter;
using EntThinkAdapter = Suake2.UI.game.EntThinkAdapter;
using EntTouchAdapter = Suake2.UI.game.EntTouchAdapter;
using EntUseAdapter = Suake2.UI.game.EntUseAdapter;
using GameAI = Suake2.UI.game.GameAI;
using GameBase = Suake2.UI.game.GameBase;
using GameUtil = Suake2.UI.game.GameUtil;
using Monster = Suake2.UI.game.Monster;
using cplane_t = Suake2.UI.game.cplane_t;
using csurface_t = Suake2.UI.game.csurface_t;
using edict_t = Suake2.UI.game.edict_t;
using mframe_t = Suake2.UI.game.mframe_t;
using mmove_t = Suake2.UI.game.mmove_t;
using Lib = Suake2.UI.util.Lib;
using Math3D = Suake2.UI.util.Math3D;
namespace Suake2.UI.game.monsters
{
	
	public class M_Actor
	{
		public M_Actor()
		{
			InitBlock();
		}
		public class AnonymousClassEntThinkAdapter:EntThinkAdapter
		{
			override public System.String ID
			{
				get
				{
					return "actor_stand";
				}
				
			}
			public override bool think(edict_t self)
			{
				self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_stand;
				
				// randomize on startup
				if (GameBase.level.time < 1.0)
					self.s.frame = self.monsterinfo.currentmove.firstframe + (Lib.rand() % (self.monsterinfo.currentmove.lastframe - self.monsterinfo.currentmove.firstframe + 1));
				return true;
			}
		}
		public class AnonymousClassEntThinkAdapter1:EntThinkAdapter
		{
			override public System.String ID
			{
				get
				{
					return "actor_walk";
				}
				
			}
			public override bool think(edict_t self)
			{
				self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_walk;
				return true;
			}
		}
		public class AnonymousClassEntThinkAdapter2:EntThinkAdapter
		{
			override public System.String ID
			{
				get
				{
					return "actor_run";
				}
				
			}
			public override bool think(edict_t self)
			{
				if ((GameBase.level.time < self.pain_debounce_time) && (self.enemy == null))
				{
					if (self.movetarget != null)
						jake2.game.monsters.M_Actor.actor_walk.think(self);
					else
						jake2.game.monsters.M_Actor.actor_stand.think(self);
					return true;
				}
				
				if ((self.monsterinfo.aiflags & Defines.AI_STAND_GROUND) != 0)
				{
					jake2.game.monsters.M_Actor.actor_stand.think(self);
					return true;
				}
				
				self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_run;
				return true;
			}
		}
		public class AnonymousClassEntPainAdapter:EntPainAdapter
		{
			override public System.String ID
			{
				get
				{
					return "actor_pain";
				}
				
			}
			public override void  pain(edict_t self, edict_t other, float kick, int damage)
			{
				
				int n;
				
				if (self.health < (self.max_health / 2))
					self.s.skinnum = 1;
				
				if (GameBase.level.time < self.pain_debounce_time)
					return ;
				
				self.pain_debounce_time = GameBase.level.time + 3;
				//GameBase.gi.sound (self, CHAN_VOICE, actor.sound_pain, 1,
				// ATTN_NORM, 0);
				
				if ((other.client != null) && (Lib.random() < 0.4))
				{
					float[] v = new float[]{0, 0, 0};
					
					System.String name;
					
					Math3D.VectorSubtract(other.s.origin, self.s.origin, v);
					self.ideal_yaw = Math3D.vectoyaw(v);
					if (Lib.random() < 0.5f)
						self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_flipoff;
					else
						self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_taunt;
					
					// FIXME: does the ent-id work out ?
					name = Suake2.UI.game.monsters.M_Actor.actor_names[(self.index) % jake2.game.monsters.M_Actor.MAX_ACTOR_NAMES];
					
					GameBase.gi.cprintf(other, Defines.PRINT_CHAT, name + ": " + jake2.game.monsters.M_Actor.messages[Lib.rand() % 3] + "!\n");
					return ;
				}
				
				n = Lib.rand() % 3;
				if (n == 0)
					self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_pain1;
				else if (n == 1)
					self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_pain2;
				else
					self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_pain3;
			}
		}
		public class AnonymousClassEntThinkAdapter3:EntThinkAdapter
		{
			override public System.String ID
			{
				get
				{
					return "actor_dead";
				}
				
			}
			public override bool think(edict_t self)
			{
				Math3D.VectorSet(self.mins, - 16, - 16, - 24);
				Math3D.VectorSet(self.maxs, 16, 16, - 8);
				self.movetype = Defines.MOVETYPE_TOSS;
				self.svflags |= Defines.SVF_DEADMONSTER;
				self.nextthink = 0;
				GameBase.gi.linkentity(self);
				return true;
			}
		}
		public class AnonymousClassEntDieAdapter:EntDieAdapter
		{
			override public System.String ID
			{
				get
				{
					return "actor_die";
				}
				
			}
			public override void  die(edict_t self, edict_t inflictor, edict_t attacker, int damage, float[] point)
			{
				int n;
				
				//	check for gib
				if (self.health <= - 80)
				{
					//		 gi.sound (self, CHAN_VOICE, actor.sound_gib, 1, ATTN_NORM,
					// 0);
					for (n = 0; n < 2; n++)
						GameMisc.ThrowGib(self, "models/objects/gibs/bone/tris.md2", damage, Defines.GIB_ORGANIC);
					for (n = 0; n < 4; n++)
						GameMisc.ThrowGib(self, "models/objects/gibs/sm_meat/tris.md2", damage, Defines.GIB_ORGANIC);
					GameMisc.ThrowHead(self, "models/objects/gibs/head2/tris.md2", damage, Defines.GIB_ORGANIC);
					self.deadflag = Defines.DEAD_DEAD;
					return ;
				}
				
				if (self.deadflag == Defines.DEAD_DEAD)
					return ;
				
				//	regular death
				//	 gi.sound (self, CHAN_VOICE, actor.sound_die, 1, ATTN_NORM, 0);
				self.deadflag = Defines.DEAD_DEAD;
				self.takedamage = Defines.DAMAGE_YES;
				
				n = Lib.rand() % 2;
				if (n == 0)
					self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_death1;
				else
					self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_death2;
			}
		}
		public class AnonymousClassEntThinkAdapter4:EntThinkAdapter
		{
			override public System.String ID
			{
				get
				{
					return "actor_fire";
				}
				
			}
			public override bool think(edict_t self)
			{
				jake2.game.monsters.M_Actor.actorMachineGun(self);
				
				if (GameBase.level.time >= self.monsterinfo.pausetime)
					self.monsterinfo.aiflags &= ~ Defines.AI_HOLD_FRAME;
				else
					self.monsterinfo.aiflags |= Defines.AI_HOLD_FRAME;
				
				return true;
			}
		}
		public class AnonymousClassEntThinkAdapter5:EntThinkAdapter
		{
			override public System.String ID
			{
				get
				{
					return "actor_attack";
				}
				
			}
			public override bool think(edict_t self)
			{
				int n;
				
				self.monsterinfo.currentmove = Suake2.UI.game.monsters.M_Actor.actor_move_attack;
				n = (Lib.rand() & 15) + 3 + 7;
				self.monsterinfo.pausetime = GameBase.level.time + n * Defines.FRAMETIME;
				
				return true;
			}
		}
		public class AnonymousClassEntUseAdapter:EntUseAdapter
		{
			override public System.String ID
			{
				get
				{
					return "actor_use";
				}
				
			}
			public override void  use(edict_t self, edict_t other, edict_t activator)
			{
				float[] v = new float[]{0, 0, 0};
				
				self.goalentity = self.movetarget = GameBase.G_PickTarget(self.target);
				if ((null == self.movetarget) || (Lib.strcmp(self.movetarget.classname, "target_actor") != 0))
				{
					GameBase.gi.dprintf(self.classname + " has bad target " + self.target + " at " + Lib.vtos(self.s.origin) + "\n");
					self.target = null;
					self.monsterinfo.pausetime = 100000000;
					self.monsterinfo.stand.think(self);
					return ;
				}
				
				Math3D.VectorSubtract(self.goalentity.s.origin, self.s.origin, v);
				self.ideal_yaw = self.s.angles[Defines.YAW] = Math3D.vectoyaw(v);
				self.monsterinfo.walk.think(self);
				self.target = null;
			}
		}
		public class AnonymousClassEntTouchAdapter:EntTouchAdapter
		{
			override public System.String ID
			{
				get
				{
					return "target_actor_touch";
				}
				
			}
			public override void  touch(edict_t self, edict_t other, cplane_t plane, csurface_t surf)
			{
				float[] v = new float[]{0, 0, 0};
				
				if (other.movetarget != self)
					return ;
				
				if (other.enemy != null)
					return ;
				
				other.goalentity = other.movetarget = null;
				
				if (self.message != null)
				{
					int n;
					edict_t ent;
					
					for (n = 1; n <= GameBase.game.maxclients; n++)
					{
						ent = GameBase.g_edicts[n];
						if (!ent.inuse)
							continue;
						GameBase.gi.cprintf(ent, Defines.PRINT_CHAT, jake2.game.monsters.M_Actor.actor_names[(other.index) % jake2.game.monsters.M_Actor.MAX_ACTOR_NAMES] + ": " + self.message + "\n");
					}
				}
				
				if ((self.spawnflags & 1) != 0)
				//jump
				{
					other.velocity[0] = self.movedir[0] * self.speed;
					other.velocity[1] = self.movedir[1] * self.speed;
					
					if (other.groundentity != null)
					{
						other.groundentity = null;
						other.velocity[2] = self.movedir[2];
						GameBase.gi.sound(other, Defines.CHAN_VOICE, GameBase.gi.soundindex("player/male/jump1.wav"), 1, Defines.ATTN_NORM, 0);
					}
				}
				
				if ((self.spawnflags & 2) != 0)
				//shoot
				{
				}
				else if ((self.spawnflags & 4) != 0)
				//attack
				{
					other.enemy = GameBase.G_PickTarget(self.pathtarget);
					if (other.enemy != null)
					{
						other.goalentity = other.enemy;
						if ((self.spawnflags & 32) != 0)
							other.monsterinfo.aiflags |= Defines.AI_BRUTAL;
						if ((self.spawnflags & 16) != 0)
						{
							other.monsterinfo.aiflags |= Defines.AI_STAND_GROUND;
							jake2.game.monsters.M_Actor.actor_stand.think(other);
						}
						else
						{
							jake2.game.monsters.M_Actor.actor_run.think(other);
						}
					}
				}
				
				if (0 != (self.spawnflags & 6) && (self.pathtarget != null))
				{
					System.String savetarget;
					
					savetarget = self.target;
					self.target = self.pathtarget;
					GameUtil.G_UseTargets(self, other);
					self.target = savetarget;
				}
				
				other.movetarget = GameBase.G_PickTarget(self.target);
				
				if (other.goalentity == null)
					other.goalentity = other.movetarget;
				
				if (null == other.movetarget && null == other.enemy)
				{
					other.monsterinfo.pausetime = GameBase.level.time + 100000000;
					other.monsterinfo.stand.think(other);
				}
				else if (other.movetarget == other.goalentity)
				{
					Math3D.VectorSubtract(other.movetarget.s.origin, other.s.origin, v);
					other.ideal_yaw = Math3D.vectoyaw(v);
				}
			}
		}
		private void  InitBlock()
		{
			actor_frames_stand = new mframe_t[]{new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null)};
			actor_frames_run = new mframe_t[]{new mframe_t(GameAI.ai_run, 4, null), new mframe_t(GameAI.ai_run, 15, null), new mframe_t(GameAI.ai_run, 15, null), new mframe_t(GameAI.ai_run, 8, null), new mframe_t(GameAI.ai_run, 20, null), new mframe_t(GameAI.ai_run, 15, null), new mframe_t(GameAI.ai_run, 8, null), new mframe_t(GameAI.ai_run, 17, null), new mframe_t(GameAI.ai_run, 12, null), new mframe_t(GameAI.ai_run, - 2, null), new mframe_t(GameAI.ai_run, - 2, null), new mframe_t(GameAI.ai_run, - 1, null)};
			actor_frames_pain1 = new mframe_t[]{new mframe_t(GameAI.ai_move_Renamed_Field, - 5, null), new mframe_t(GameAI.ai_move_Renamed_Field, 4, null), new mframe_t(GameAI.ai_move_Renamed_Field, 1, null)};
			actor_frames_pain2 = new mframe_t[]{new mframe_t(GameAI.ai_move_Renamed_Field, - 4, null), new mframe_t(GameAI.ai_move_Renamed_Field, 4, null), new mframe_t(GameAI.ai_move_Renamed_Field, 0, null)};
			actor_frames_pain3 = new mframe_t[]{new mframe_t(GameAI.ai_move_Renamed_Field, - 1, null), new mframe_t(GameAI.ai_move_Renamed_Field, 1, null), new mframe_t(GameAI.ai_move_Renamed_Field, 0, null)};
			actor_frames_flipoff = new mframe_t[]{new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null)};
			actor_frames_taunt = new mframe_t[]{new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null), new mframe_t(GameAI.ai_turn_Renamed_Field, 0, null)};
			actor_frames_death1 = new mframe_t[]{new mframe_t(GameAI.ai_move_Renamed_Field, 0, null), new mframe_t(GameAI.ai_move_Renamed_Field, 0, null), new mframe_t(GameAI.ai_move_Renamed_Field, - 13, null), new mframe_t(GameAI.ai_move_Renamed_Field, 14, null), new mframe_t(GameAI.ai_move_Renamed_Field, 3, null), new mframe_t(GameAI.ai_move_Renamed_Field, - 2, null), new mframe_t(GameAI.ai_move_Renamed_Field, 1, null)};
			actor_frames_death2 = new mframe_t[]{new mframe_t(GameAI.ai_move_Renamed_Field, 0, null), new mframe_t(GameAI.ai_move_Renamed_Field, 7, null), new mframe_t(GameAI.ai_move_Renamed_Field, - 6, null), new mframe_t(GameAI.ai_move_Renamed_Field, - 5, null), new mframe_t(GameAI.ai_move_Renamed_Field, 1, null), new mframe_t(GameAI.ai_move_Renamed_Field, 0, null), new mframe_t(GameAI.ai_move_Renamed_Field, - 1, null), new mframe_t(GameAI.ai_move_Renamed_Field, - 2, null), new mframe_t(GameAI.ai_move_Renamed_Field, - 1, null), new mframe_t(GameAI.ai_move_Renamed_Field, - 9, null), new mframe_t(GameAI.ai_move_Renamed_Field, - 13, null), new mframe_t(GameAI.ai_move_Renamed_Field, - 13, null), new mframe_t(GameAI.ai_move_Renamed_Field, 0, null)};
			actor_frames_attack = new mframe_t[]{new mframe_t(GameAI.ai_charge, - 2, actor_fire), new mframe_t(GameAI.ai_charge, - 2, null), new mframe_t(GameAI.ai_charge, 3, null), new mframe_t(GameAI.ai_charge, 2, null)};
		}
		//	This file generated by ModelGen - Do NOT Modify
		
		public const int FRAME_attak01 = 0;
		
		public const int FRAME_attak02 = 1;
		
		public const int FRAME_attak03 = 2;
		
		public const int FRAME_attak04 = 3;
		
		public const int FRAME_death101 = 4;
		
		public const int FRAME_death102 = 5;
		
		public const int FRAME_death103 = 6;
		
		public const int FRAME_death104 = 7;
		
		public const int FRAME_death105 = 8;
		
		public const int FRAME_death106 = 9;
		
		public const int FRAME_death107 = 10;
		
		public const int FRAME_death201 = 11;
		
		public const int FRAME_death202 = 12;
		
		public const int FRAME_death203 = 13;
		
		public const int FRAME_death204 = 14;
		
		public const int FRAME_death205 = 15;
		
		public const int FRAME_death206 = 16;
		
		public const int FRAME_death207 = 17;
		
		public const int FRAME_death208 = 18;
		
		public const int FRAME_death209 = 19;
		
		public const int FRAME_death210 = 20;
		
		public const int FRAME_death211 = 21;
		
		public const int FRAME_death212 = 22;
		
		public const int FRAME_death213 = 23;
		
		public const int FRAME_death301 = 24;
		
		public const int FRAME_death302 = 25;
		
		public const int FRAME_death303 = 26;
		
		public const int FRAME_death304 = 27;
		
		public const int FRAME_death305 = 28;
		
		public const int FRAME_death306 = 29;
		
		public const int FRAME_death307 = 30;
		
		public const int FRAME_death308 = 31;
		
		public const int FRAME_death309 = 32;
		
		public const int FRAME_death310 = 33;
		
		public const int FRAME_death311 = 34;
		
		public const int FRAME_death312 = 35;
		
		public const int FRAME_death313 = 36;
		
		public const int FRAME_death314 = 37;
		
		public const int FRAME_death315 = 38;
		
		public const int FRAME_flip01 = 39;
		
		public const int FRAME_flip02 = 40;
		
		public const int FRAME_flip03 = 41;
		
		public const int FRAME_flip04 = 42;
		
		public const int FRAME_flip05 = 43;
		
		public const int FRAME_flip06 = 44;
		
		public const int FRAME_flip07 = 45;
		
		public const int FRAME_flip08 = 46;
		
		public const int FRAME_flip09 = 47;
		
		public const int FRAME_flip10 = 48;
		
		public const int FRAME_flip11 = 49;
		
		public const int FRAME_flip12 = 50;
		
		public const int FRAME_flip13 = 51;
		
		public const int FRAME_flip14 = 52;
		
		public const int FRAME_grenad01 = 53;
		
		public const int FRAME_grenad02 = 54;
		
		public const int FRAME_grenad03 = 55;
		
		public const int FRAME_grenad04 = 56;
		
		public const int FRAME_grenad05 = 57;
		
		public const int FRAME_grenad06 = 58;
		
		public const int FRAME_grenad07 = 59;
		
		public const int FRAME_grenad08 = 60;
		
		public const int FRAME_grenad09 = 61;
		
		public const int FRAME_grenad10 = 62;
		
		public const int FRAME_grenad11 = 63;
		
		public const int FRAME_grenad12 = 64;
		
		public const int FRAME_grenad13 = 65;
		
		public const int FRAME_grenad14 = 66;
		
		public const int FRAME_grenad15 = 67;
		
		public const int FRAME_jump01 = 68;
		
		public const int FRAME_jump02 = 69;
		
		public const int FRAME_jump03 = 70;
		
		public const int FRAME_jump04 = 71;
		
		public const int FRAME_jump05 = 72;
		
		public const int FRAME_jump06 = 73;
		
		public const int FRAME_pain101 = 74;
		
		public const int FRAME_pain102 = 75;
		
		public const int FRAME_pain103 = 76;
		
		public const int FRAME_pain201 = 77;
		
		public const int FRAME_pain202 = 78;
		
		public const int FRAME_pain203 = 79;
		
		public const int FRAME_pain301 = 80;
		
		public const int FRAME_pain302 = 81;
		
		public const int FRAME_pain303 = 82;
		
		public const int FRAME_push01 = 83;
		
		public const int FRAME_push02 = 84;
		
		public const int FRAME_push03 = 85;
		
		public const int FRAME_push04 = 86;
		
		public const int FRAME_push05 = 87;
		
		public const int FRAME_push06 = 88;
		
		public const int FRAME_push07 = 89;
		
		public const int FRAME_push08 = 90;
		
		public const int FRAME_push09 = 91;
		
		public const int FRAME_run01 = 92;
		
		public const int FRAME_run02 = 93;
		
		public const int FRAME_run03 = 94;
		
		public const int FRAME_run04 = 95;
		
		public const int FRAME_run05 = 96;
		
		public const int FRAME_run06 = 97;
		
		public const int FRAME_run07 = 98;
		
		public const int FRAME_run08 = 99;
		
		public const int FRAME_run09 = 100;
		
		public const int FRAME_run10 = 101;
		
		public const int FRAME_run11 = 102;
		
		public const int FRAME_run12 = 103;
		
		public const int FRAME_runs01 = 104;
		
		public const int FRAME_runs02 = 105;
		
		public const int FRAME_runs03 = 106;
		
		public const int FRAME_runs04 = 107;
		
		public const int FRAME_runs05 = 108;
		
		public const int FRAME_runs06 = 109;
		
		public const int FRAME_runs07 = 110;
		
		public const int FRAME_runs08 = 111;
		
		public const int FRAME_runs09 = 112;
		
		public const int FRAME_runs10 = 113;
		
		public const int FRAME_runs11 = 114;
		
		public const int FRAME_runs12 = 115;
		
		public const int FRAME_salute01 = 116;
		
		public const int FRAME_salute02 = 117;
		
		public const int FRAME_salute03 = 118;
		
		public const int FRAME_salute04 = 119;
		
		public const int FRAME_salute05 = 120;
		
		public const int FRAME_salute06 = 121;
		
		public const int FRAME_salute07 = 122;
		
		public const int FRAME_salute08 = 123;
		
		public const int FRAME_salute09 = 124;
		
		public const int FRAME_salute10 = 125;
		
		public const int FRAME_salute11 = 126;
		
		public const int FRAME_salute12 = 127;
		
		public const int FRAME_stand101 = 128;
		
		public const int FRAME_stand102 = 129;
		
		public const int FRAME_stand103 = 130;
		
		public const int FRAME_stand104 = 131;
		
		public const int FRAME_stand105 = 132;
		
		public const int FRAME_stand106 = 133;
		
		public const int FRAME_stand107 = 134;
		
		public const int FRAME_stand108 = 135;
		
		public const int FRAME_stand109 = 136;
		
		public const int FRAME_stand110 = 137;
		
		public const int FRAME_stand111 = 138;
		
		public const int FRAME_stand112 = 139;
		
		public const int FRAME_stand113 = 140;
		
		public const int FRAME_stand114 = 141;
		
		public const int FRAME_stand115 = 142;
		
		public const int FRAME_stand116 = 143;
		
		public const int FRAME_stand117 = 144;
		
		public const int FRAME_stand118 = 145;
		
		public const int FRAME_stand119 = 146;
		
		public const int FRAME_stand120 = 147;
		
		public const int FRAME_stand121 = 148;
		
		public const int FRAME_stand122 = 149;
		
		public const int FRAME_stand123 = 150;
		
		public const int FRAME_stand124 = 151;
		
		public const int FRAME_stand125 = 152;
		
		public const int FRAME_stand126 = 153;
		
		public const int FRAME_stand127 = 154;
		
		public const int FRAME_stand128 = 155;
		
		public const int FRAME_stand129 = 156;
		
		public const int FRAME_stand130 = 157;
		
		public const int FRAME_stand131 = 158;
		
		public const int FRAME_stand132 = 159;
		
		public const int FRAME_stand133 = 160;
		
		public const int FRAME_stand134 = 161;
		
		public const int FRAME_stand135 = 162;
		
		public const int FRAME_stand136 = 163;
		
		public const int FRAME_stand137 = 164;
		
		public const int FRAME_stand138 = 165;
		
		public const int FRAME_stand139 = 166;
		
		public const int FRAME_stand140 = 167;
		
		public const int FRAME_stand201 = 168;
		
		public const int FRAME_stand202 = 169;
		
		public const int FRAME_stand203 = 170;
		
		public const int FRAME_stand204 = 171;
		
		public const int FRAME_stand205 = 172;
		
		public const int FRAME_stand206 = 173;
		
		public const int FRAME_stand207 = 174;
		
		public const int FRAME_stand208 = 175;
		
		public const int FRAME_stand209 = 176;
		
		public const int FRAME_stand210 = 177;
		
		public const int FRAME_stand211 = 178;
		
		public const int FRAME_stand212 = 179;
		
		public const int FRAME_stand213 = 180;
		
		public const int FRAME_stand214 = 181;
		
		public const int FRAME_stand215 = 182;
		
		public const int FRAME_stand216 = 183;
		
		public const int FRAME_stand217 = 184;
		
		public const int FRAME_stand218 = 185;
		
		public const int FRAME_stand219 = 186;
		
		public const int FRAME_stand220 = 187;
		
		public const int FRAME_stand221 = 188;
		
		public const int FRAME_stand222 = 189;
		
		public const int FRAME_stand223 = 190;
		
		public const int FRAME_swim01 = 191;
		
		public const int FRAME_swim02 = 192;
		
		public const int FRAME_swim03 = 193;
		
		public const int FRAME_swim04 = 194;
		
		public const int FRAME_swim05 = 195;
		
		public const int FRAME_swim06 = 196;
		
		public const int FRAME_swim07 = 197;
		
		public const int FRAME_swim08 = 198;
		
		public const int FRAME_swim09 = 199;
		
		public const int FRAME_swim10 = 200;
		
		public const int FRAME_swim11 = 201;
		
		public const int FRAME_swim12 = 202;
		
		public const int FRAME_sw_atk01 = 203;
		
		public const int FRAME_sw_atk02 = 204;
		
		public const int FRAME_sw_atk03 = 205;
		
		public const int FRAME_sw_atk04 = 206;
		
		public const int FRAME_sw_atk05 = 207;
		
		public const int FRAME_sw_atk06 = 208;
		
		public const int FRAME_sw_pan01 = 209;
		
		public const int FRAME_sw_pan02 = 210;
		
		public const int FRAME_sw_pan03 = 211;
		
		public const int FRAME_sw_pan04 = 212;
		
		public const int FRAME_sw_pan05 = 213;
		
		public const int FRAME_sw_std01 = 214;
		
		public const int FRAME_sw_std02 = 215;
		
		public const int FRAME_sw_std03 = 216;
		
		public const int FRAME_sw_std04 = 217;
		
		public const int FRAME_sw_std05 = 218;
		
		public const int FRAME_sw_std06 = 219;
		
		public const int FRAME_sw_std07 = 220;
		
		public const int FRAME_sw_std08 = 221;
		
		public const int FRAME_sw_std09 = 222;
		
		public const int FRAME_sw_std10 = 223;
		
		public const int FRAME_sw_std11 = 224;
		
		public const int FRAME_sw_std12 = 225;
		
		public const int FRAME_sw_std13 = 226;
		
		public const int FRAME_sw_std14 = 227;
		
		public const int FRAME_sw_std15 = 228;
		
		public const int FRAME_sw_std16 = 229;
		
		public const int FRAME_sw_std17 = 230;
		
		public const int FRAME_sw_std18 = 231;
		
		public const int FRAME_sw_std19 = 232;
		
		public const int FRAME_sw_std20 = 233;
		
		public const int FRAME_taunt01 = 234;
		
		public const int FRAME_taunt02 = 235;
		
		public const int FRAME_taunt03 = 236;
		
		public const int FRAME_taunt04 = 237;
		
		public const int FRAME_taunt05 = 238;
		
		public const int FRAME_taunt06 = 239;
		
		public const int FRAME_taunt07 = 240;
		
		public const int FRAME_taunt08 = 241;
		
		public const int FRAME_taunt09 = 242;
		
		public const int FRAME_taunt10 = 243;
		
		public const int FRAME_taunt11 = 244;
		
		public const int FRAME_taunt12 = 245;
		
		public const int FRAME_taunt13 = 246;
		
		public const int FRAME_taunt14 = 247;
		
		public const int FRAME_taunt15 = 248;
		
		public const int FRAME_taunt16 = 249;
		
		public const int FRAME_taunt17 = 250;
		
		public const int FRAME_walk01 = 251;
		
		public const int FRAME_walk02 = 252;
		
		public const int FRAME_walk03 = 253;
		
		public const int FRAME_walk04 = 254;
		
		public const int FRAME_walk05 = 255;
		
		public const int FRAME_walk06 = 256;
		
		public const int FRAME_walk07 = 257;
		
		public const int FRAME_walk08 = 258;
		
		public const int FRAME_walk09 = 259;
		
		public const int FRAME_walk10 = 260;
		
		public const int FRAME_walk11 = 261;
		
		public const int FRAME_wave01 = 262;
		
		public const int FRAME_wave02 = 263;
		
		public const int FRAME_wave03 = 264;
		
		public const int FRAME_wave04 = 265;
		
		public const int FRAME_wave05 = 266;
		
		public const int FRAME_wave06 = 267;
		
		public const int FRAME_wave07 = 268;
		
		public const int FRAME_wave08 = 269;
		
		public const int FRAME_wave09 = 270;
		
		public const int FRAME_wave10 = 271;
		
		public const int FRAME_wave11 = 272;
		
		public const int FRAME_wave12 = 273;
		
		public const int FRAME_wave13 = 274;
		
		public const int FRAME_wave14 = 275;
		
		public const int FRAME_wave15 = 276;
		
		public const int FRAME_wave16 = 277;
		
		public const int FRAME_wave17 = 278;
		
		public const int FRAME_wave18 = 279;
		
		public const int FRAME_wave19 = 280;
		
		public const int FRAME_wave20 = 281;
		
		public const int FRAME_wave21 = 282;
		
		public const int FRAME_bl_atk01 = 283;
		
		public const int FRAME_bl_atk02 = 284;
		
		public const int FRAME_bl_atk03 = 285;
		
		public const int FRAME_bl_atk04 = 286;
		
		public const int FRAME_bl_atk05 = 287;
		
		public const int FRAME_bl_atk06 = 288;
		
		public const int FRAME_bl_flp01 = 289;
		
		public const int FRAME_bl_flp02 = 290;
		
		public const int FRAME_bl_flp13 = 291;
		
		public const int FRAME_bl_flp14 = 292;
		
		public const int FRAME_bl_flp15 = 293;
		
		public const int FRAME_bl_jmp01 = 294;
		
		public const int FRAME_bl_jmp02 = 295;
		
		public const int FRAME_bl_jmp03 = 296;
		
		public const int FRAME_bl_jmp04 = 297;
		
		public const int FRAME_bl_jmp05 = 298;
		
		public const int FRAME_bl_jmp06 = 299;
		
		public const int FRAME_bl_pn101 = 300;
		
		public const int FRAME_bl_pn102 = 301;
		
		public const int FRAME_bl_pn103 = 302;
		
		public const int FRAME_bl_pn201 = 303;
		
		public const int FRAME_bl_pn202 = 304;
		
		public const int FRAME_bl_pn203 = 305;
		
		public const int FRAME_bl_pn301 = 306;
		
		public const int FRAME_bl_pn302 = 307;
		
		public const int FRAME_bl_pn303 = 308;
		
		public const int FRAME_bl_psh08 = 309;
		
		public const int FRAME_bl_psh09 = 310;
		
		public const int FRAME_bl_run01 = 311;
		
		public const int FRAME_bl_run02 = 312;
		
		public const int FRAME_bl_run03 = 313;
		
		public const int FRAME_bl_run04 = 314;
		
		public const int FRAME_bl_run05 = 315;
		
		public const int FRAME_bl_run06 = 316;
		
		public const int FRAME_bl_run07 = 317;
		
		public const int FRAME_bl_run08 = 318;
		
		public const int FRAME_bl_run09 = 319;
		
		public const int FRAME_bl_run10 = 320;
		
		public const int FRAME_bl_run11 = 321;
		
		public const int FRAME_bl_run12 = 322;
		
		public const int FRAME_bl_rns03 = 323;
		
		public const int FRAME_bl_rns04 = 324;
		
		public const int FRAME_bl_rns05 = 325;
		
		public const int FRAME_bl_rns06 = 326;
		
		public const int FRAME_bl_rns07 = 327;
		
		public const int FRAME_bl_rns08 = 328;
		
		public const int FRAME_bl_rns09 = 329;
		
		public const int FRAME_bl_sal10 = 330;
		
		public const int FRAME_bl_sal11 = 331;
		
		public const int FRAME_bl_sal12 = 332;
		
		public const int FRAME_bl_std01 = 333;
		
		public const int FRAME_bl_std02 = 334;
		
		public const int FRAME_bl_std03 = 335;
		
		public const int FRAME_bl_std04 = 336;
		
		public const int FRAME_bl_std05 = 337;
		
		public const int FRAME_bl_std06 = 338;
		
		public const int FRAME_bl_std07 = 339;
		
		public const int FRAME_bl_std08 = 340;
		
		public const int FRAME_bl_std09 = 341;
		
		public const int FRAME_bl_std10 = 342;
		
		public const int FRAME_bl_std11 = 343;
		
		public const int FRAME_bl_std12 = 344;
		
		public const int FRAME_bl_std13 = 345;
		
		public const int FRAME_bl_std14 = 346;
		
		public const int FRAME_bl_std15 = 347;
		
		public const int FRAME_bl_std16 = 348;
		
		public const int FRAME_bl_std17 = 349;
		
		public const int FRAME_bl_std18 = 350;
		
		public const int FRAME_bl_std19 = 351;
		
		public const int FRAME_bl_std20 = 352;
		
		public const int FRAME_bl_std21 = 353;
		
		public const int FRAME_bl_std22 = 354;
		
		public const int FRAME_bl_std23 = 355;
		
		public const int FRAME_bl_std24 = 356;
		
		public const int FRAME_bl_std25 = 357;
		
		public const int FRAME_bl_std26 = 358;
		
		public const int FRAME_bl_std27 = 359;
		
		public const int FRAME_bl_std28 = 360;
		
		public const int FRAME_bl_std29 = 361;
		
		public const int FRAME_bl_std30 = 362;
		
		public const int FRAME_bl_std31 = 363;
		
		public const int FRAME_bl_std32 = 364;
		
		public const int FRAME_bl_std33 = 365;
		
		public const int FRAME_bl_std34 = 366;
		
		public const int FRAME_bl_std35 = 367;
		
		public const int FRAME_bl_std36 = 368;
		
		public const int FRAME_bl_std37 = 369;
		
		public const int FRAME_bl_std38 = 370;
		
		public const int FRAME_bl_std39 = 371;
		
		public const int FRAME_bl_std40 = 372;
		
		public const int FRAME_bl_swm01 = 373;
		
		public const int FRAME_bl_swm02 = 374;
		
		public const int FRAME_bl_swm03 = 375;
		
		public const int FRAME_bl_swm04 = 376;
		
		public const int FRAME_bl_swm05 = 377;
		
		public const int FRAME_bl_swm06 = 378;
		
		public const int FRAME_bl_swm07 = 379;
		
		public const int FRAME_bl_swm08 = 380;
		
		public const int FRAME_bl_swm09 = 381;
		
		public const int FRAME_bl_swm10 = 382;
		
		public const int FRAME_bl_swm11 = 383;
		
		public const int FRAME_bl_swm12 = 384;
		
		public const int FRAME_bl_swk01 = 385;
		
		public const int FRAME_bl_swk02 = 386;
		
		public const int FRAME_bl_swk03 = 387;
		
		public const int FRAME_bl_swk04 = 388;
		
		public const int FRAME_bl_swk05 = 389;
		
		public const int FRAME_bl_swk06 = 390;
		
		public const int FRAME_bl_swp01 = 391;
		
		public const int FRAME_bl_swp02 = 392;
		
		public const int FRAME_bl_swp03 = 393;
		
		public const int FRAME_bl_swp04 = 394;
		
		public const int FRAME_bl_swp05 = 395;
		
		public const int FRAME_bl_sws01 = 396;
		
		public const int FRAME_bl_sws02 = 397;
		
		public const int FRAME_bl_sws03 = 398;
		
		public const int FRAME_bl_sws04 = 399;
		
		public const int FRAME_bl_sws05 = 400;
		
		public const int FRAME_bl_sws06 = 401;
		
		public const int FRAME_bl_sws07 = 402;
		
		public const int FRAME_bl_sws08 = 403;
		
		public const int FRAME_bl_sws09 = 404;
		
		public const int FRAME_bl_sws10 = 405;
		
		public const int FRAME_bl_sws11 = 406;
		
		public const int FRAME_bl_sws12 = 407;
		
		public const int FRAME_bl_sws13 = 408;
		
		public const int FRAME_bl_sws14 = 409;
		
		public const int FRAME_bl_tau14 = 410;
		
		public const int FRAME_bl_tau15 = 411;
		
		public const int FRAME_bl_tau16 = 412;
		
		public const int FRAME_bl_tau17 = 413;
		
		public const int FRAME_bl_wlk01 = 414;
		
		public const int FRAME_bl_wlk02 = 415;
		
		public const int FRAME_bl_wlk03 = 416;
		
		public const int FRAME_bl_wlk04 = 417;
		
		public const int FRAME_bl_wlk05 = 418;
		
		public const int FRAME_bl_wlk06 = 419;
		
		public const int FRAME_bl_wlk07 = 420;
		
		public const int FRAME_bl_wlk08 = 421;
		
		public const int FRAME_bl_wlk09 = 422;
		
		public const int FRAME_bl_wlk10 = 423;
		
		public const int FRAME_bl_wlk11 = 424;
		
		public const int FRAME_bl_wav19 = 425;
		
		public const int FRAME_bl_wav20 = 426;
		
		public const int FRAME_bl_wav21 = 427;
		
		public const int FRAME_cr_atk01 = 428;
		
		public const int FRAME_cr_atk02 = 429;
		
		public const int FRAME_cr_atk03 = 430;
		
		public const int FRAME_cr_atk04 = 431;
		
		public const int FRAME_cr_atk05 = 432;
		
		public const int FRAME_cr_atk06 = 433;
		
		public const int FRAME_cr_atk07 = 434;
		
		public const int FRAME_cr_atk08 = 435;
		
		public const int FRAME_cr_pan01 = 436;
		
		public const int FRAME_cr_pan02 = 437;
		
		public const int FRAME_cr_pan03 = 438;
		
		public const int FRAME_cr_pan04 = 439;
		
		public const int FRAME_cr_std01 = 440;
		
		public const int FRAME_cr_std02 = 441;
		
		public const int FRAME_cr_std03 = 442;
		
		public const int FRAME_cr_std04 = 443;
		
		public const int FRAME_cr_std05 = 444;
		
		public const int FRAME_cr_std06 = 445;
		
		public const int FRAME_cr_std07 = 446;
		
		public const int FRAME_cr_std08 = 447;
		
		public const int FRAME_cr_wlk01 = 448;
		
		public const int FRAME_cr_wlk02 = 449;
		
		public const int FRAME_cr_wlk03 = 450;
		
		public const int FRAME_cr_wlk04 = 451;
		
		public const int FRAME_cr_wlk05 = 452;
		
		public const int FRAME_cr_wlk06 = 453;
		
		public const int FRAME_cr_wlk07 = 454;
		
		public const int FRAME_crbl_a01 = 455;
		
		public const int FRAME_crbl_a02 = 456;
		
		public const int FRAME_crbl_a03 = 457;
		
		public const int FRAME_crbl_a04 = 458;
		
		public const int FRAME_crbl_a05 = 459;
		
		public const int FRAME_crbl_a06 = 460;
		
		public const int FRAME_crbl_a07 = 461;
		
		public const int FRAME_crbl_p01 = 462;
		
		public const int FRAME_crbl_p02 = 463;
		
		public const int FRAME_crbl_p03 = 464;
		
		public const int FRAME_crbl_p04 = 465;
		
		public const int FRAME_crbl_s01 = 466;
		
		public const int FRAME_crbl_s02 = 467;
		
		public const int FRAME_crbl_s03 = 468;
		
		public const int FRAME_crbl_s04 = 469;
		
		public const int FRAME_crbl_s05 = 470;
		
		public const int FRAME_crbl_s06 = 471;
		
		public const int FRAME_crbl_s07 = 472;
		
		public const int FRAME_crbl_s08 = 473;
		
		public const int FRAME_crbl_w01 = 474;
		
		public const int FRAME_crbl_w02 = 475;
		
		public const int FRAME_crbl_w03 = 476;
		
		public const int FRAME_crbl_w04 = 477;
		
		public const int FRAME_crbl_w05 = 478;
		
		public const int FRAME_crbl_w06 = 479;
		
		public const int FRAME_crbl_w07 = 480;
		
		public const float MODEL_SCALE = 1.000000f;
		
		public const int MAX_ACTOR_NAMES = 8;
		
		internal static System.String[] actor_names = new System.String[]{"Hellrot", "Tokay", "Killme", "Disruptor", "Adrianator", "Rambear", "Titus", "Bitterman"};
		
		//UPGRADE_NOTE: The initialization of  'actor_stand' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static EntThinkAdapter actor_stand;
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_stand' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_stand;
		
		internal static mmove_t actor_move_stand = new mmove_t(FRAME_stand101, FRAME_stand140, actor_frames_stand, null);
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_walk' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_walk;
		
		internal static mmove_t actor_move_walk = new mmove_t(FRAME_walk01, FRAME_walk08, actor_frames_walk, null);
		
		//UPGRADE_NOTE: The initialization of  'actor_walk' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static EntThinkAdapter actor_walk;
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_run' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_run;
		
		internal static mmove_t actor_move_run = new mmove_t(FRAME_run02, FRAME_run07, actor_frames_run, null);
		
		//UPGRADE_NOTE: The initialization of  'actor_run' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static EntThinkAdapter actor_run;
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_pain1' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_pain1;
		
		internal static mmove_t actor_move_pain1 = new mmove_t(FRAME_pain101, FRAME_pain103, actor_frames_pain1, actor_run);
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_pain2' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_pain2;
		
		internal static mmove_t actor_move_pain2 = new mmove_t(FRAME_pain201, FRAME_pain203, actor_frames_pain2, actor_run);
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_pain3' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_pain3;
		
		internal static mmove_t actor_move_pain3 = new mmove_t(FRAME_pain301, FRAME_pain303, actor_frames_pain3, actor_run);
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_flipoff' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_flipoff;
		
		internal static mmove_t actor_move_flipoff = new mmove_t(FRAME_flip01, FRAME_flip14, actor_frames_flipoff, actor_run);
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_taunt' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_taunt;
		
		internal static mmove_t actor_move_taunt = new mmove_t(FRAME_taunt01, FRAME_taunt17, actor_frames_taunt, actor_run);
		
		internal static System.String[] messages = new System.String[]{"Watch it", "#$@*&", "Idiot", "Check your targets"};
		
		//UPGRADE_NOTE: The initialization of  'actor_pain' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static EntPainAdapter actor_pain;
		
		//UPGRADE_NOTE: The initialization of  'actor_dead' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static EntThinkAdapter actor_dead;
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_death1' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_death1;
		
		internal static mmove_t actor_move_death1 = new mmove_t(FRAME_death101, FRAME_death107, actor_frames_death1, actor_dead);
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_death2' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_death2;
		
		internal static mmove_t actor_move_death2 = new mmove_t(FRAME_death201, FRAME_death213, actor_frames_death2, actor_dead);
		
		//UPGRADE_NOTE: The initialization of  'actor_die' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static EntDieAdapter actor_die;
		
		//UPGRADE_NOTE: The initialization of  'actor_fire' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static EntThinkAdapter actor_fire;
		
		//UPGRADE_NOTE: The initialization of  'actor_frames_attack' was moved to method 'InitBlock'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static mframe_t[] actor_frames_attack;
		
		internal static mmove_t actor_move_attack = new mmove_t(FRAME_attak01, FRAME_attak04, actor_frames_attack, actor_run);
		
		//UPGRADE_NOTE: The initialization of  'actor_attack' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static EntThinkAdapter actor_attack;
		
		//UPGRADE_NOTE: The initialization of  'actor_use' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static EntUseAdapter actor_use;
		
		/*
		* QUAKED target_actor (.5 .3 0) (-8 -8 -8) (8 8 8) JUMP SHOOT ATTACK x HOLD
		* BRUTAL JUMP jump in set direction upon reaching this target SHOOT take a
		* single shot at the pathtarget ATTACK attack pathtarget until it or actor
		* is dead
		* 
		* "target" next target_actor "pathtarget" target of any action to be taken
		* at this point "wait" amount of time actor should pause at this point
		* "message" actor will "say" this to the player
		* 
		* for JUMP only: "speed" speed thrown forward (default 200) "height" speed
		* thrown upwards (default 200)
		*/
		
		//UPGRADE_NOTE: The initialization of  'target_actor_touch' was moved to static method 'jake2.game.monsters.M_Actor'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1005'"
		internal static EntTouchAdapter target_actor_touch;
		
		internal static void  actorMachineGun(edict_t self)
		{
			float[] start = new float[]{0, 0, 0}, target = new float[]{0, 0, 0};
			
			float[] forward = new float[]{0, 0, 0}, right = new float[]{0, 0, 0};
			
			Math3D.AngleVectors(self.s.angles, forward, right, null);
			
			Math3D.G_ProjectSource(self.s.origin, M_Flash.monster_flash_offset[Defines.MZ2_ACTOR_MACHINEGUN_1], forward, right, start);
			
			if (self.enemy != null)
			{
				if (self.enemy.health > 0)
				{
					Math3D.VectorMA(self.enemy.s.origin, - 0.2f, self.enemy.velocity, target);
					target[2] += self.enemy.viewheight;
				}
				else
				{
					Math3D.VectorCopy(self.enemy.absmin, target);
					target[2] += (self.enemy.size[2] / 2);
				}
				Math3D.VectorSubtract(target, start, forward);
				Math3D.VectorNormalize(forward);
			}
			else
			{
				Math3D.AngleVectors(self.s.angles, forward, null, null);
			}
			Monster.monster_fire_bullet(self, start, forward, 3, 4, Defines.DEFAULT_BULLET_HSPREAD, Defines.DEFAULT_BULLET_VSPREAD, Defines.MZ2_ACTOR_MACHINEGUN_1);
		}
		
		/// <summary> QUAKED misc_actor (1 .5 0) (-16 -16 -24) (16 16 32)</summary>
		
		public static void  SP_misc_actor(edict_t self)
		{
			if (GameBase.deathmatch.value_Renamed != 0)
			{
				GameUtil.G_FreeEdict(self);
				return ;
			}
			
			if (self.targetname != null)
			{
				GameBase.gi.dprintf("untargeted " + self.classname + " at " + Lib.vtos(self.s.origin) + "\n");
				GameUtil.G_FreeEdict(self);
				return ;
			}
			
			if (self.target != null)
			{
				GameBase.gi.dprintf(self.classname + " with no target at " + Lib.vtos(self.s.origin) + "\n");
				GameUtil.G_FreeEdict(self);
				return ;
			}
			
			self.movetype = Defines.MOVETYPE_STEP;
			self.solid = Defines.SOLID_BBOX;
			self.s.modelindex = GameBase.gi.modelindex("players/male/tris.md2");
			Math3D.VectorSet(self.mins, - 16, - 16, - 24);
			Math3D.VectorSet(self.maxs, 16, 16, 32);
			
			if (0 == self.health)
				self.health = 100;
			self.mass = 200;
			
			self.pain = actor_pain;
			self.die = actor_die;
			
			self.monsterinfo.stand = actor_stand;
			self.monsterinfo.walk = actor_walk;
			self.monsterinfo.run = actor_run;
			self.monsterinfo.attack = actor_attack;
			self.monsterinfo.melee = null;
			self.monsterinfo.sight = null;
			
			self.monsterinfo.aiflags |= Defines.AI_GOOD_GUY;
			
			GameBase.gi.linkentity(self);
			
			self.monsterinfo.currentmove = actor_move_stand;
			self.monsterinfo.scale = MODEL_SCALE;
			
			GameAI.walkmonster_start.think(self);
			
			// actors always start in a dormant state, they *must* be used to get
			// going
			self.use = actor_use;
		}
		
		public static void  SP_target_actor(edict_t self)
		{
			if (self.targetname != null)
				GameBase.gi.dprintf(self.classname + " with no targetname at " + Lib.vtos(self.s.origin) + " \n");
			
			self.solid = Defines.SOLID_TRIGGER;
			self.touch = target_actor_touch;
			Math3D.VectorSet(self.mins, - 8, - 8, - 8);
			Math3D.VectorSet(self.maxs, 8, 8, 8);
			self.svflags = Defines.SVF_NOCLIENT;
			
			if ((self.spawnflags & 1) != 0)
			{
				if (0 == self.speed)
					self.speed = 200;
				if (0 == GameBase.st.height)
					GameBase.st.height = 200;
				if (self.s.angles[Defines.YAW] == 0)
					self.s.angles[Defines.YAW] = 360;
				GameBase.G_SetMovedir(self.s.angles, self.movedir);
				self.movedir[2] = GameBase.st.height;
			}
			
			GameBase.gi.linkentity(self);
		}
		static M_Actor()
		{
			actor_stand = new AnonymousClassEntThinkAdapter();
			actor_frames_walk = new mframe_t[]{new mframe_t(GameAI.ai_walk_Renamed_Field, 0, null), new mframe_t(GameAI.ai_walk_Renamed_Field, 6, null), new mframe_t(GameAI.ai_walk_Renamed_Field, 10, null), new mframe_t(GameAI.ai_walk_Renamed_Field, 3, null), new mframe_t(GameAI.ai_walk_Renamed_Field, 2, null), new mframe_t(GameAI.ai_walk_Renamed_Field, 7, null), new mframe_t(GameAI.ai_walk_Renamed_Field, 10, null), new mframe_t(GameAI.ai_walk_Renamed_Field, 1, null), new mframe_t(GameAI.ai_walk_Renamed_Field, 4, null), new mframe_t(GameAI.ai_walk_Renamed_Field, 0, null), new mframe_t(GameAI.ai_walk_Renamed_Field, 0, null)};
			actor_walk = new AnonymousClassEntThinkAdapter1();
			actor_run = new AnonymousClassEntThinkAdapter2();
			actor_pain = new AnonymousClassEntPainAdapter();
			actor_dead = new AnonymousClassEntThinkAdapter3();
			actor_die = new AnonymousClassEntDieAdapter();
			actor_fire = new AnonymousClassEntThinkAdapter4();
			actor_attack = new AnonymousClassEntThinkAdapter5();
			actor_use = new AnonymousClassEntUseAdapter();
			target_actor_touch = new AnonymousClassEntTouchAdapter();
		}
	}
}